//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
//
// (C) Copyright 2006 Marvell International Ltd.
// All Rights Reserved
//

#ifndef __QCIBUS_H_
#define __QCIBUS_H_

#define MAX_INITPARAM 0x20
#include <DefBus.h>

class SensorFolder : public DeviceFolder{
public:
    SensorFolder(LPCTSTR lpBusName,LPCTSTR lpTemplateRegPath,DWORD dwBusType, DWORD BusNumber,PCI_SLOT_NUMBER SlotNumber,HANDLE hParent);
    ~SensorFolder();
    // Sensor Power Handling;
    BOOL SetPowerState(CEDEVICE_POWER_STATE newPowerState);
private:
};

class QciBus : public  DefaultBusDriver {
public:
    QciBus(LPCTSTR lpActiveRegPath);
    ~QciBus();
    virtual BOOL Init(); 
    virtual BOOL PostInit() ;
//    virtual BOOL PowerUp() ;
//    virtual BOOL PowerDown();
    virtual DWORD GetBusNamePrefix(LPTSTR lpReturnBusName,DWORD dwSizeInUnit);
    BOOL FastIOControl(DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut,
                       PDWORD pdwActualOut,DeviceFolder **ppDeviceFoler);

private:
    BOOL AssignChildDriver();
    BOOL ActiveAllChildDriver();
    LPTSTR  m_lpActiveRegPath;
    CRegistryEdit m_DeviceKey;
    DWORD   m_dwDeviceIndex;

    DWORD   m_dwBusType;
    LPTSTR  m_lpBusName;
    DWORD   m_dwBusNumber;    

    CEDEVICE_POWER_STATE m_PowerState;
    
    LPTSTR  m_lpStrInitParam;
    DWORD   m_dwNumOfInitParam;
    LPTSTR  m_lpInitParamArray[MAX_INITPARAM];
    
};

#endif

